package com.example.week7_cp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class FirstProviderActivity extends AppCompatActivity {

    //定义要操作 ContentProvider 对象的解析器对象
    ContentResolver contentResolver;
    //定义要操作内容提供者的地址
    Uri uri = Uri.parse("content://com.he.week7_cp.firstprovider");
    //定义按钮组件
    Button insert, delete, update, query;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_provider);

        //通过 getContentResolver()获取系统操作用的解析器 contentResolver
        contentResolver = getContentResolver();

        //初始化组件并设置事件监听器
        insert = findViewById(R.id.insert);
        delete = findViewById(R.id.delete);
        update = findViewById(R.id.update);
        query = findViewById(R.id.query);
        insert.setOnClickListener(onClickListener);
        delete.setOnClickListener(onClickListener);
        update.setOnClickListener(onClickListener);
        query.setOnClickListener(onClickListener);
    }

    private View.OnClickListener onClickListener=new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.insert: //增加
                    insert(view);
                    break;
                case R.id.delete: //删除
                    delete(view);
                    break;
                case R.id.update: //更新
                    update(view);
                    break;
                case R.id.query: //查询
                    query(view);
                    break;
            }
        }


    };

        private void insert(View source) {
            ContentValues values=new ContentValues();
            //把要插入的值封装到 ContentValue 对象中
            values.put("name","Zhang San");
            values.put("age",25);
            //调用 ContentResolver 的 insert()方法完成插入
            //返回的是该 Uri 对应的 ContentProvider 的 insert()的返回值
            Uri newUri=contentResolver.insert(uri,values);
            Toast.makeText(this,"远程 ContentProvide 新插入记录的 Uri 为："+newUri,Toast.LENGTH_LONG).show();
    }
    private void update(View  source) {

        //把要更新的值封装到 ContentValue 对象中
        ContentValues values = new ContentValues();
        values.put("name", "Zhang Xiao San");
        //调用 ContentResolver 的 update()方法。
        //返回的是更新的行数
        int count = contentResolver.update(uri, values,
                "name = ?",
                new String[]{"zhang san"});
        //以下是完成更新操作后的逻辑
        Toast.makeText(this, "远程 ContentProvide 更新记录数为：" + count, Toast.LENGTH_LONG).show();
    }

    private void delete(View  source) {
        //调用 ContentResolver 的 delete()方法。
        //返回的是删除的行数
        int count = contentResolver.delete(uri, "age > 120", null);
        //以下是完成删除操作后的逻辑
        Toast.makeText(this, "远程 ContentProvide 删除记录数为：" + count, Toast.LENGTH_LONG).show();
    }

    private void query(View source) {
        //调用 ContentReslver 的 query()方法
        //实际返回的是该 Uri 对应的 ContentProvider 的 query()的返回值
        Cursor cursor = contentResolver.query(uri,
                new String[]{"name", "age"},
                "name LIKE ? and age > 21",
                new String[]{"zhang"},
                "age");
        //以下是完成插入操作后的逻辑，一般针对 cursor 中的每一行进行处理
        Toast.makeText(this, "远程 ContentProvide 返回的 Cursor 为：" + cursor,
                Toast.LENGTH_LONG).show();
    }
        
}